package com.datastructure.test.isvalidstring;

public class IsValidString {

    public static void main(String[] args) {
        IsValidString isValidString = new IsValidString();
        System.out.println(isValidString.isValidString("**************************************************))))))))))))))))))))))))))))))))))))))))))))))))))"));
    }

    public boolean isValidString (String s) {
        // write code here
        s= s.replaceAll("\\(\\)", "");
        char[] charArray = s.toCharArray();
        for (int i = 0; i < charArray.length; i++) {
            if(charArray[i]=='('){
                computeIsValid(i+1,charArray);
            }
        }
        for (int i = 0; i < charArray.length; i++) {
            if(charArray[i]=='*'){
                computeIsValid2(i+1,charArray);
            }
        }
        for (char c : charArray) {
            if (c == '(' || c == ')') {
                return false;
            }
        }
        return true;
    }

    private void computeIsValid2(int i, char[] charArray) {
        for (int j = i; j < charArray.length; j++) {
            if(charArray[j]==')'){
                charArray[j]=0;
                break;
            }
        }
    }

    private void computeIsValid(int i, char[] charArray) {
        boolean flag = true;
        for (int j = i; j < charArray.length; j++) {
            if(charArray[j]==')'){
                flag=false;
                charArray[j]=0;
                charArray[i-1]=0;
                break;
            }
        }
        if(flag){
            for (int j = i; j < charArray.length; j++) {
                if(charArray[j]=='*'){
                    charArray[j]=0;
                    charArray[i-1]=0;
                    break;
                }
            }
        }
    }
}
